/**
 * 
 */
package fr.gfi.agraf.service;

import java.util.List;

import fr.gfi.agraf.exception.AgrafException;
import fr.gfi.agraf.vue.bean.ProfilDTO;

/**
 * @author Zakaria
 *
 */
public interface IProfilService {

	/**
	 * Récupere un profil à partir d'un id
	 * 
	 * @return
	 * @throws AgrafException
	 */
	ProfilDTO getProfilById(final Long id) throws AgrafException;

	/**
	 * Récupere tous les utilisateurs actifs
	 * 
	 * @return
	 * @throws AgrafException
	 */
	List<ProfilDTO> getAllProfil() throws AgrafException;

	/**
	 * Ajouter un nouveau profil
	 * 
	 * @param profilDTO
	 * @throws AgrafException
	 */
	void ajouterProfil(final ProfilDTO profilDTO) throws AgrafException;

	/**
	 * Supprimer un profil
	 * 
	 * @param id
	 * @throws AgrafException
	 */
	void supprimerProfil(final Long id) throws AgrafException;

	/**
	 * Modifier un profil
	 * 
	 * @param profilDTO
	 * @throws AgrafException
	 */
	void modifierProfil(final ProfilDTO profilDTO) throws AgrafException;

	/**
	 * Récupere tous les profils et verifie ceux que l'utilisateur posséde déjà
	 * 
	 * @param utilisateurId
	 * @return
	 * @throws AgrafException 
	 */
	List<ProfilDTO> getAllProfilToModifyUtilisateur(final Long utilisateurId) throws AgrafException;
	
	/**
	 * Récupere tous les profils d'un utilisateur
	 * 
	 * @param utilisateurId
	 * @return
	 * @throws AgrafException
	 */
	List<ProfilDTO> getProfilsByUtilisateurID(final Long utilisateurId) throws  AgrafException;
}
